// BPMN设计器简单汉化工具

console.log('BPMN简单汉化工具已加载')

// 中文翻译映射
const translations = {
  'Start Event': '开始事件',
  'End Event': '结束事件',
  'Task': '任务',
  'User Task': '用户任务',
  'Service Task': '服务任务',
  'Script Task': '脚本任务',
  'Manual Task': '手工任务',
  'Business Rule Task': '业务规则任务',
  'Exclusive Gateway': '排他网关',
  'Parallel Gateway': '并行网关',
  'Inclusive Gateway': '包容网关',
  'Sub Process': '子流程',
  'Data Object': '数据对象',
  'Text Annotation': '文本注释',
  'General': '常规',
  'Details': '详细信息',
  'ID': '标识符',
  'Name': '名称',
  'Assignee': '指派人',
  'Candidate Users': '候选用户',
  'Candidate Groups': '候选组',
  'Due Date': '到期日期',
  'Priority': '优先级',
  'Form Key': '表单键',
  'Type': '类型',
  'Value': '值',
  'Required': '必需',
  'Readable': '可读',
  'Writable': '可写',
  'Script': '脚本',
  'Resource': '资源',
  'Topic': '主题',
  'Message Name': '消息名称',
  'Error Code': '错误代码',
  'Error Message': '错误消息',
  'Condition': '条件',
  'Expression': '表达式',
  'Language': '语言',
  'Class': '类',
  'External': '外部',
  'Business Key': '业务键',
  'In': '输入',
  'Out': '输出',
  'Local': '本地',
  'Add': '添加',
  'Remove': '移除',
  'Edit': '编辑',
  'Delete': '删除',
  'Save': '保存',
  'Cancel': '取消',
  'OK': '确定',
  'Apply': '应用',
  'Reset': '重置',
  'Clear': '清除',
  'Select': '选择',
  'Browse': '浏览',
  'Upload': '上传',
  'Download': '下载',
  'Export': '导出',
  'Import': '导入',
  'Refresh': '刷新',
  'Search': '搜索',
  'Filter': '过滤'
}

// 汉化函数
function localizeText(text) {
  return translations[text] || text
}

// 汉化元素
function localizeElement(element) {
  if (!element || !element.nodeType) return

  try {
    // 汉化title属性
    if (element.hasAttribute && element.hasAttribute('title')) {
      const title = element.getAttribute('title')
      const translated = localizeText(title)
      if (translated !== title) {
        element.setAttribute('title', translated)
        console.log(`汉化title: "${title}" -> "${translated}"`)
      }
    }

    // 汉化文本内容
    if (element.textContent) {
      const text = element.textContent.trim()
      const translated = localizeText(text)
      if (translated !== text && text.length < 50) {
        element.textContent = translated
        console.log(`汉化文本: "${text}" -> "${translated}"`)
      }
    }

    // 汉化placeholder属性
    if (element.hasAttribute && element.hasAttribute('placeholder')) {
      const placeholder = element.getAttribute('placeholder')
      const translated = localizeText(placeholder)
      if (translated !== placeholder) {
        element.setAttribute('placeholder', translated)
        console.log(`汉化placeholder: "${placeholder}" -> "${translated}"`)
      }
    }

  } catch (error) {
    console.warn('汉化元素时出错:', error)
  }
}

// 汉化所有BPMN元素
function localizeAllBpmnElements() {
  console.log('开始汉化所有BPMN元素...')

  // 查找所有可能的BPMN元素
  const selectors = [
    '.djs-palette .entry',
    '.bpp-palette .entry',
    '.palette .entry',
    '[class*="palette"] .entry',
    '.djs-palette-toggle',
    '.bpp-palette-toggle',
    '.bpp-properties-panel *',
    '.djs-element',
    '[class*="bpmn"]',
    '[class*="djs"]',
    '[class*="bpp"]'
  ]

  selectors.forEach(selector => {
    try {
      const elements = document.querySelectorAll(selector)
      console.log(`选择器 "${selector}": 找到 ${elements.length} 个元素`)
      elements.forEach(localizeElement)
    } catch (error) {
      console.warn(`选择器 "${selector}" 出错:`, error)
    }
  })

  console.log('BPMN元素汉化完成')
}

// 创建观察者
function createObserver() {
  const observer = new MutationObserver((mutations) => {
    mutations.forEach((mutation) => {
      if (mutation.type === 'childList') {
        mutation.addedNodes.forEach((node) => {
          if (node.nodeType === Node.ELEMENT_NODE) {
            localizeElement(node)
            // 递归处理子元素
            const children = node.querySelectorAll && node.querySelectorAll('*')
            if (children) {
              children.forEach(localizeElement)
            }
          }
        })
      }
    })
  })

  return observer
}

// 启动汉化系统
function startBpmnI18n() {
  console.log('启动BPMN汉化系统...')

  // 创建观察者
  const observer = createObserver()

  // 开始观察
  observer.observe(document.body, {
    childList: true,
    subtree: true
  })

  // 立即汉化现有元素
  setTimeout(() => {
    localizeAllBpmnElements()
  }, 1000)

  // 定期检查
  const interval = setInterval(() => {
    localizeAllBpmnElements()
  }, 3000)

  // 30秒后停止定期检查
  setTimeout(() => {
    clearInterval(interval)
    console.log('定期汉化检查结束')
  }, 30000)

  console.log('BPMN汉化系统已启动')
}

// 导出函数
window.startBpmnI18n = startBpmnI18n
window.localizeAllBpmnElements = localizeAllBpmnElements

// 自动启动
if (document.readyState === 'loading') {
  document.addEventListener('DOMContentLoaded', startBpmnI18n)
} else {
  startBpmnI18n()
}
